Malleable routing for data packets

ABSTRACT

Various implementations disclosed herein enable malleable routing for data packets. For example, in various implementations, a method of routing a type of data packets is performed by a device. In some implementations, the device includes a non-transitory memory and one or more processors coupled with the non-transitory memory. In some implementations, the method includes determining a routing criterion to transmit a set of data packets across a network. In some implementations, the method includes identifying network nodes and communication links in the network that satisfy the routing criterion. In some implementations, the method includes determining a route for the set of data packets through the network nodes and the communication links that satisfy the routing criterion. In some implementations, the method includes configuring the network nodes that are on the route with configuration information that allows the set of data packets to propagate along the route.

PRIORITY CLAIM

This application is a continuation of and claims priority to U.S. patentapplication Ser. No. 17/360,283 filed Jun. 28, 2021, which claimspriority to U.S. patent application Ser. No. 15/986,174 filed May 22,2018, which issued as U.S. Pat. No. 11,050,662, on Jun. 29, 2021, andclaims priority to U.S. Provisional Patent Application No. 62/527,611filed on Jun. 30, 2017, the disclosure of each application, in itsentirety is hereby incorporated herein by reference.

TECHNICAL FIELD

The present disclosure relates generally to routing, and in particular,to malleable routing for data packets.

BACKGROUND

In some previously available networks, data packets are routed based ona fixed rule that aims to optimize a specific metric. For example, insome previously available networks, data packets are routed based on ashortest path algorithm. However, fixed rules are sometimes unsuitablefor certain types of data packets. For example, not all data packetsneed to be routed based on the shortest path algorithm. As an example,some data packets may need to be routed via network nodes that support aheightened level of encryption even if such network nodes are not on theshortest path.

BRIEF DESCRIPTION OF THE DRAWINGS

So that the present disclosure can be understood by those of ordinaryskill in the art, a more detailed description may be had by reference toaspects of some illustrative implementations, some of which are shown inthe accompanying drawings.

FIGS. 1A-1F are schematic diagrams of a network environment that allowsmalleable routing for data packets in accordance with someimplementations.

FIG. 2A is a flowchart representation of a method of configuring networknodes in a network in accordance with some implementations.

FIG. 2B is a flowchart representation of a method of propagating datapackets in accordance with some implementations.

FIG. 3 is a block diagram of a device enabled with various modules thatare provided to configure network nodes and propagate data packets inaccordance with some implementations.

In accordance with common practice the various features illustrated inthe drawings may not be drawn to scale. Accordingly, the dimensions ofthe various features may be arbitrarily expanded or reduced for clarity.In addition, some of the drawings may not depict all of the componentsof a given system, method or device. Finally, like reference numeralsmay be used to denote like features throughout the specification andfigures.

DESCRIPTION OF EXAMPLE EMBODIMENTS

Numerous details are described herein in order to provide a thoroughunderstanding of the illustrative implementations shown in theaccompanying drawings. However, the accompanying drawings merely showsome example aspects of the present disclosure and are therefore not tobe considered limiting. Those of ordinary skill in the art willappreciate from the present disclosure that other effective aspectsand/or variants do not include all of the specific details of theexample implementations described herein. While pertinent features areshown and described, those of ordinary skill in the art will appreciatefrom the present disclosure that various other features, includingwell-known systems, methods, components, devices, and circuits, have notbeen illustrated or described in exhaustive detail for the sake ofbrevity and so as not to obscure more pertinent aspects of the exampleimplementations disclosed herein.

OVERVIEW

Various implementations disclosed herein enable malleable routing fordata packets. For example, in various implementations, a method ofrouting a type of data packets is performed by a device. In someimplementations, the device includes a non-transitory memory and one ormore processors coupled with the non-transitory memory. In someimplementations, the method includes determining a routing criterion totransmit a set of data packets across a network. In someimplementations, the method includes identifying network nodes andcommunication links in the network that satisfy the routing criterion.In some implementations, the method includes determining a route for theset of data packets through the network nodes and the communicationlinks that satisfy the routing criterion. In some implementations, themethod includes configuring the network nodes that are on the route withconfiguration information that allows the set of data packets topropagate along the route.

EXAMPLE EMBODIMENTS

Some networks treat various types of data packets equally. For example,some networks route different types of data packets according to thesame routing criterion (e.g., routing algorithm). Many networksprimarily utilize a shortest route criterion (e.g., the shortest pathalgorithm) to route data packets. In such networks, data packetscorresponding to a video download are routed according to the samecriterion as data packets corresponding to a phone call. This rigidapproach of routing data packets according to a fixed criterion issometimes unsuitable for certain types of data packets. For example,while the shortest route criterion may be suitable for data packetscorresponding to a phone call, the shortest route criterion may beunsuitable for data packets corresponding to an encrypted file transfer.

The present disclosure provides methods, systems and/or devices thatenable malleable routing for data packets. In some implementations,different routing criteria are utilized to transport different types ofdata packets. In some implementations, different routing criteriainclude different routing algorithms or different routing schemes. Thisflexible approach of utilizing different routing criteria for differenttypes of data packets tends to result in routes that are more suitablefor the type of data packets. For example, in some implementations, theshortest route criterion is utilized to route data packets correspondingto a phone call but a different routing criterion is utilized to routedata packets corresponding to an encrypted file transfer. The presentdisclosure provides more configuration options to network operators byallowing the network operators to support different routing criteria.For example, the present disclosure enables a network operator tosupport an existing routing criterion, support a modified version of anexisting routing criterion, and/or create a new routing criterion. Thepresent disclosure also provides more configuration options forindividual network nodes. For example, the present disclosure enables anetwork node to install configuration information for an existingrouting criterion, a modified version of an existing routing criterion,and/or a new routing criterion.

FIGS. 1A-1F are schematic diagrams of a network environment 10 thatallows malleable routing for data packets in accordance with someimplementations. While certain specific features are illustrated, thoseof ordinary skill in the art will appreciate from the present disclosurethat various other features have not been illustrated for the sake ofbrevity and so as not to obscure more pertinent aspects of the exampleimplementations disclosed herein. To that end, the network environment10 includes client devices A and B, various network nodes N1, N2 . . .N9, various communication links L1, L2 . . . L19, and a networkcontroller 20. Although the network controller 20 is shown as beingseparate from the network nodes N1, N2 . . . N9, in someimplementations, the network controller 20 is implemented by one or moreof the network nodes N1, N2 . . . N9. In other words, in someimplementations, the network controller 20 is distributed across one ormore of the network nodes N1, N2 . . . N9.

Referring to FIG. 1B, in various implementations, the network nodes N1 .. . N9 support one or more routing criteria. For example, in someimplementations, the network nodes N1 . . . N9 support one or morerouting algorithms. In the example of FIG. 1B, the network node N1supports algorithm (Alg) x, the network node N2 supports Alg.s x and y,the network node N3 supports Alg.s x and z, the network node N4 supportsAlg.s x and y, the network node N5 supports Alg.s x, y and z, thenetwork node N6 supports Alg.s y and z, the network node N7 supports Algz, the network node N8 support Alg.s x and z, the network node N9supports Alg.s x and z. In some implementations, the network nodes N1 .. . N9 are configured to route data packets in accordance with therouting criteria (e.g., the routing algorithm) that the network nodes N1. . . N9 support. For example, the network node N1 is configured toroute data packets in accordance with Alg x.

In some implementations, data packets that are to be routed inaccordance with a particular routing criterion are propagated along aroute that includes network nodes that support that particular routingcriterion. In the example of FIG. 1B, data packets that are to be routedin accordance with Alg x may be transmitted along a route that includesnetwork node N1 or network node N4. However, data packets that are to berouted in accordance with Alg y are transmitted along a route thatincludes network node N4, and not network node N1.

Referring to FIG. 1C, in some implementations, some network nodesindicate (e.g., advertise, broadcast and/or publish) the routingcriteria that the network nodes support. In some implementations, thenetwork nodes indicate their support for a particular routing criterionvia a router capability (RC). In some implementations, the network nodesare associated with a respective set of router capabilities. In someimplementations, a network node utilizes a first router capability toindicate the definition of a routing criterion, a second routercapability to indicate whether or not the network node supports therouting criterion, and a third router capability to indicate a segmentidentifier (SID) that is associated with the routing criterion. In theexample of FIG. 1C, a router capability of network node N1 indicatesthat the SID for Alg x is 16,001. In the example of FIG. 1C, a routercapability of network node N2 indicates that the SID for Alg x is 16,002and the SID for Alg y is 16,102. In the example of FIG. 1C, a routercapability of network node N5 indicates that the SID for Alg x is16,005, the SID for Alg y is 16,105 and the SID for Alg z is 16,205. Inthe example of FIG. 1C, a router capability of network node N9 indicatesthat the SID for Alg x is 16,009 and the SID for Alg z is 16,209. Insome implementations, some network nodes do not advertise the routingcriteria that the network nodes support. In some implementations, somenetwork nodes are not associated with SIDs. For example, in FIG. 1C,network nodes N3, N4, N7 and N8 are associated with any SIDs. In someimplementations, some network nodes have SIDs for some routing criteriawhile not for other routing criteria. For example, in FIG. 1C, thenetwork node N6 has an SID for Alg y but the network node N6 does nothave an SID for Alg z.

Referring to FIG. 1D, in various implementations, the network nodes N1 .. . N9 install configuration information that allows the network nodesN1 . . . N9 to direct (e.g., propagate or transmit) data packets inaccordance with different routing criteria. In some implementations, theconfiguration information includes forwarding entries that indicatedownstream network nodes that support the routing criterion being usedto transmit data packets. In some implementations, the forwardingentries include a mapping of SIDs to downstream network nodes that areassociated with the SIDs. In the example of FIG. 1D, the network node N1includes forwarding entries that map SIDs 16,002, 16,005 and 16,009 tothe network node N2. As such, the network node N1 transmits any datapackets that are labeled with SID 16,002, 16,005 or 16,009 to thenetwork node N2. In the example of FIG. 1D, the network node N2 includesforwarding entries that map SID 16,009 to network node N3, and SID16,106 to network node N6. As such, the network node N2 transmits anydata packets that are labeled with SID 16,009 to network node N3, andany data packets that are labeled with SID 16,106 to network node N6. Inthe example of FIG. 1D, the network node N5 includes forwarding entriesthat map SID 16,009 to network node N9. As such, the network node N5transmits any data packets that are labeled with SID 16,009 to networknode N9.

In some implementations, the forwarding entries (e.g., the configurationinformation) are installed at the network nodes in response to thenetwork nodes being on a route that is being used to transport datapackets. In some implementations, the forwarding entries are installedat the network nodes by a controller (e.g., the network controller 20shown in FIG. 1A). For example, in some implementations, the controllerpushes the forwarding entries to the network nodes after determiningthat the network nodes are on a selected route for transporting datapackets. In some implementations, the forwarding entries are installedon the network nodes that are on the route, and not on the network nodesthat are not on the route. More generally, in various implementations,network nodes that are on a route for transporting a set of data packetsare configured with configuration information.

In various implementations, the configuration information is updatedwhen data packets are transmitted using a different routing criterion.For example, in some implementations, different forwarding entries areinstalled when data packets are transmitted using different routingalgorithms. More generally, in various implementations, theconfiguration information (e.g., the forwarding entries) are based onthe routing criterion (e.g., the routing algorithm) that is being usedto transport the data packets. Updating the configuration information(e.g., updating the forwarding entries) allows more flexibility intransporting data packets using different routing criteria (e.g.,different routing algorithms). For example, with reference to FIG. 1D,updating the forwarding entries enables transporting a first set of datapackets in accordance with Alg x, a second set of data packets inaccordance with Alg y, and a third set of data packets in accordancewith Alg z.

Referring to FIG. 1E, the network obtains a request to transmit a set ofdata packets 100 from client device A to client device B. In the exampleof FIG. 1E, the set of data packets are labeled with a MPLS(multiprotocol label switching) label of 16,009. The MPLS label of16,009 indicates that the set of data packets are to be transmitted inaccordance with Alg x because 16,009 is the SID for Alg x at networknode N9. More generally, in various implementations, the set of datapackets 100 indicates a routing criterion that is to be used totransport the set of data packets 100. In some implementations, the MPLSlabel is applied to the set of data packets 100 by the network node N1,the network controller 20 shown in FIG. 1A and/or the client device A.

FIG. 1E illustrates a route which includes network nodes that supportAlg x—the routing criterion that is to be used to transport the set ofdata packets 100. As illustrated in FIG. 1E, the route includes networknodes N1, N2, N5 and N9, and communication links L1, L2, L6, L14 andL19. In operation, the network node N1 receives the set of data packets100. Since the set of data packets 100 are labeled with 16,009, inaccordance with the forwarding entries installed at network node N1,network node N1 forwards the set of data packets 100 to network node N2.Network node N2 receives the set of data packets 100 from network nodeN1 over the communication link L2. Since the set of data packets 100 arelabeled with 16,009, in accordance with the forwarding entries installedat network node N2, network node N2 forwards the set of data packets 100to network node N5. Network node N5 receives the set of data packets 100from network node N2 over the communication link L6. Since the set ofdata packets 100 are labeled with 16,009, in accordance with theforwarding entries installed at network node N5, network node N5forwards the set of data packets 100 to network node N9. Network node N9receives the set of data packets 100 from network node N5 over thecommunication link L14. Network node N9 forwards the set of data packets100 to the client device B over the communication link L19.

In the example of FIG. 1E, the network nodes N1, N2, N5 and N9 on theroute satisfy the routing criterion associated with the set of datapackets 100. For example, the network nodes N1, N2, N5 and N9 supportAlg x. Network nodes that do not support the routing criterionassociated with the set of data packets 100 are not included in theroute. For example, network nodes N7 and N6 are not included in theroute. In some implementations, a controller (e.g., the networkcontroller 20 shown in FIG. 1A) identifies all network nodes thatsupport the routing criterion associated with the set of data packets100. For example, the controller identifies that network nodes N1, N2,N3, N4, N5, N8 and N9 support Alg x. In some implementations, thecontroller determines the shortest/fastest route through the networknodes that support the routing criterion associated with the set of datapackets 100. In the example of FIG. 1E, the shortest/fastest routeincludes network nodes N1, N2, N5 and N9.

Referring to FIG. 1F, in various implementations, the routing criterionindicates one or more restrictions (e.g., exclusionary constraints). Insome implementations, the exclusionary constraints indicatecharacteristics of network nodes and/or communication links that are tobe avoided. In such implementations, the determined route does notinclude network nodes and/or communication links with characteristicsthat match the exclusionary constraints. In the example of FIG. 1F, thecommunication link L6 is associated with affinity red. Moreover, in theexample of FIG. 1F, one of the exclusionary constraints associated withthe routing criterion (e.g., with Alg x) is to avoid communication linkswith affinity red. As such, in the example of FIG. 1F, the route doesnot include communication link L6. Instead of communication link L6, theroute in the example of FIG. 1F includes communication links L3 and L7.

In various implementations, the routing criterion for the set of datapackets 100 is determined based on a type of the data packets 100. Forexample, in some implementations, if the set of data packets 100correspond to streaming video, then the routing criterion for the set ofdata packets 100 is set to Alg x. In some implementations, if the set ofdata packets 100 correspond to messaging, then the routing criterion forthe set of data packets 100 is set to Alg y. In some implementations, ifthe set of data packets 100 correspond to encrypted traffic, then therouting criterion for the set of data packets 100 is set to Alg z. Insome implementations, the routing criterion for the set of data packets100 is set by the client device A. In some implementations, the routingcriterion for the set of data packets 100 is set by network node N1. Insome implementations, the routing criterion for the set of data packets100 is set by a controller (e.g., by the network controller 20 shown inFIG. 1A).

In the example of FIG. 1A, the network controller 20 is shown as beingseparate from the network nodes N1 . . . N9. However, in someimplementations, the network controller 20 resides at one or more of thenetwork nodes N1 . . . N9. In some implementations, the networkcontroller 20 is distributed across various computing devices. Forexample, in some implementations, the network controller 20 isimplemented by a cloud computing system. In the example of FIG. 1A, asingle instance of the network controller 20 is shown. However, in someimplementations, there are multiple instances of the network controller20. For example, in some implementations, different network controllerscontrol different parts of the network. In some implementations, thenetwork nodes N1 . . . N9 are controlled by different network operatingentities. In such implementations, each network operating entityutilizes a network controller to control its network nodes.

FIG. 2A is a flowchart representation of a method 200 of configuringnetwork nodes (e.g., the network nodes N1 . . . N9 shown in FIGS. 1A-1F)in a network in accordance with some implementations. In variousimplementations, the method 200 is implemented as a set of computerreadable instructions that are executed at a device (e.g., the networkcontroller 20 shown in FIG. 1A, one or more of the network nodes N1 . .. N9 shown in FIGS. 1A-1F and/or the device 300 shown in FIG. 3).Briefly, the method 200 includes determining a routing criterion totransmit a set of data packets (210), identifying network nodes andcommunication links that satisfy the routing criterion (220),determining a route for the set of data packets through the networknodes and the communication links that satisfy the routing criterion(230), and configuring the network nodes that are on the route withconfiguration information that allows the set of data packets topropagate along the route (240).

As represented by block 210, in various implementations, the method 200includes determining a routing criterion to transmit a set of datapackets across a network. For example, in some implementations, themethod 200 includes determining a routing algorithm to transmit the setof data packets across a set of interconnected network nodes. Asrepresented by block 210 a, in some implementations, the method 200includes determining the routing criterion based on the set of datapackets. In some implementations, the method 200 includes determiningthe routing criterion based on a type of the set of data packets. Forexample, in some implementations, the type indicates whether the set ofdata packets carry messaging data (e.g., messages from an instantmessaging application), media data (e.g., videos, music, etc.), voicedata, file transfer data, streaming data (e.g., video streaming data,audio streaming data, etc.), and/or encrypted data. In someimplementations, the method 200 includes selecting a first routingcriterion for data packets that correspond to video streaming, selectinga second routing criterion for data packets that correspond tomessaging, and selecting a third routing criterion for data packets thatcorrespond to all other types of traffic. As represented by block 210 b,in some implementations, the method 200 includes selecting the routingcriterion from a plurality of routing criteria. In some implementations,the method 200 includes determining the routing criterion by selectingan existing routing criterion. In some implementations, the method 200includes determining the routing criterion by modifying an existingrouting criterion. In some implementations, the method 200 includesdetermining the routing criterion by creating a new routing criterion.

In some implementations, the set of data packets are associated with atransmission priority value (e.g., ‘1’ for high priority, ‘0’ for mediumpriority and ‘−1’ for low priority). In such implementations, the method200 includes determining the routing criterion for the set of datapackets based on the transmission priority value. For example, in suchimplementations, the method 200 includes selecting a first routingcriterion (e.g., Alg x shown in FIG. 1B) for data packets with atransmission priority value of ‘1’, a second routing criterion (e.g.,Alg y shown in FIG. 1B) for data packets with a transmission priorityvalue of ‘0’, and a third routing criterion (e.g., Alg z shown in FIG.1B) for data packets with a transmission priority value of ‘−1’.

In some implementations, the method 200 includes determining the routingcriterion based on a target metric associated with the set of datapackets. In some implementations, the target metric includes an InteriorGateway Protocol (IGP) metric. In some implementations, the networknodes and/or the communication links are configured to control (e.g.,maintain, reduce or increase) the IGP metric. In some implementations,the target metric relates to affinity values. For example, in someimplementations, the target metric is to exclude predefined affinityvalues (e.g., exclude Traffic Engineering (TE) affinity 2, exclude TEaffinity 1, etc.). In some implementations, the target metric relates tocolor values. For example, in some implementations, the target metricspecifies specific color values (e.g., Color 1, Color 2, etc.).

As represented by block 220, in various implementations, the method 200includes identifying network nodes and communication links in thenetwork that satisfy the routing criterion. As represented by block 220a, in some implementations, the method 200 includes selecting nodes thatsupport and/or advertise support for the routing criterion for the setof data packets. In some implementations, the method 200 includesselecting network nodes that support the routing criterion regardless ofwhether the network nodes advertise support for the routing criterion.In some implementations, the method 200 includes selecting network nodesthat support the routing criterion and advertise support for the routingcriterion (e.g., the network nodes indicate that they support therouting criterion).

As represented by block 220 b, in some implementations, the method 200includes selecting network nodes and/or communication links that are notassociated with exclusionary constraints corresponding to the routingcriterion. In some implementations, the routing criterion indicates oneor more exclusionary constraints (e.g., characteristics of network nodesand/or communication links that are to be avoided). In suchimplementations, the method 200 includes forgoing selecting networknodes and/or communication links with characteristics that are among theexclusionary constraints.

As represented by block 230, in some implementations, the method 200includes determining a route through the network nodes and thecommunication links that satisfy the routing criterion. In someimplementations, the method 200 includes determining the shortest routethrough the network nodes and the communication links that satisfy therouting criterion. In some implementations, the method 200 includesdetermining the fastest route through the network nodes and thecommunication links that satisfy the routing criterion.

In some implementations, the method 200 includes determining the routebased on a target metric associated with the set of data packets. Invarious implementations, the network nodes are associated withrespective target metrics. For example, in some implementations, thenetwork nodes are configured to control (e.g., maintain, reduce orincrease) their respective target metrics. In such implementations, themethod 200 includes determining the route by selecting network nodesthat are configured to control the target metric associated with the setof data packets. In some implementations, the target metric includes oneor more of an Interior Gateway Protocol (IGP) metric, a TrafficEngineering (TE) metric, etc.

As represented by block 240, in various implementations, the method 200includes configuring the network nodes that are on the route withconfiguration information that allows the set of data packets topropagate along the route. As represented by block 240 a, in someimplementations, the method 400 includes installing forwarding entriesat the network nodes that are on the route. In some implementations, themethod 200 includes pushing, by a controller (e.g., the networkcontroller 20 shown in FIG. 1A) the forwarding entries to the networknodes that are on the route. In some implementations, the method 200includes fetching, by the network nodes that are on the route, theforwarding entries. As represented by block 240 b, in someimplementations, the forwarding entries identify downstream nodes thatsatisfy the routing criterion. For example, in some implementations, theforwarding entries map SIDs to corresponding network nodes (e.g.,Internet Protocol (IP) addresses of corresponding network nodes).

FIG. 2B is a flowchart representation of a method 250 of propagatingdata packets in accordance with some implementations. In variousimplementations, the method 250 is implemented as a set of computerreadable instructions that are executed at a device (e.g., the networkcontroller 20 shown in FIG. 1A, one or more of the network nodes N1 . .. N9 shown in FIGS. 1A-1F and/or the device 300 shown in FIG. 3).Briefly, the method 250 includes obtaining a request to transmit a setof data packets (260), applying a label to the set of data packets(270), and propagating the data packets in accordance with forwardingentries and the label (280).

As represented by block 260, in various implementations, the method 250includes obtaining a request to transmit the set of data packets (e.g.,the set of data packets 100 shown in FIG. 1E). In some implementations,the method 250 includes receiving the request from a client device(e.g., the client device A shown in FIGS. 1A-1F). In someimplementations, the method 250 includes receiving the request at anetwork node that is at an edge of the network (e.g., at an edge node,for example, at network node N1 shown in FIGS. 1A-1F). In someimplementations, the method 250 includes receiving the request at acontroller (e.g., the network controller 20 shown in FIG. 1A).

As represented by block 270, in various implementations, the method 250includes applying a label to the set of data packets. As represented byblock 270 a, in some implementations, the label indicates a routingcriterion for transmitting the data packets. To that end, in someimplementations, the method 250 includes determining the routingcriterion for transmitting the data packets. For example, in someimplementations, the method 250 includes determining the routingcriterion based on the set of data packets. In some implementations, themethod 250 includes selecting an existing routing criterion, modifyingan existing routing criterion or creating a new routing criterion basedon a type of the set of data packets. In some implementations, themethod 250 includes determining the routing criterion based on therequest (e.g., by retrieving the routing criterion from the request). Asrepresented by block 270 b, in some implementations, the method 250includes applying a MPLS label to the set of data packets. For example,in some implementations, the method 250 includes inserting the label inrespective header fields of the data packets.

As represented by block 280, in various implementations, the method 250includes propagating the data packets in accordance with configurationinformation of the network nodes and the label. In some implementations,the method 250 includes forwarding the data packets in accordance withforwarding entries and the label affixed to the set of data packets. Forexample, in some implementations, the method 250 includes forwarding thedata packets to the network node that is mapped to the label.

In various implementations, the method 200 and/or the method 250 allowrouting of data packets even though the network nodes and thecommunication links have different routing capabilities. In someimplementations, the method 200 allows the network nodes and thecommunication links to support different routing criteria therebyproviding more flexibility. For example, in some implementations, themethod 200 allows the network nodes and/or the communication links tosupport different routing algorithms. Advantageously, the method 200enables malleable routing for data packets by allowing the network nodesand/or the communication links to change their respective routingcapabilities (e.g., by supporting different routing criteria).

FIG. 3 is a block diagram of a device 300 enabled with one or morecomponents of a device (e.g., the network controller 20 shown in FIG.1A, and/or one or more of the network nodes N1 . . . N9 shown in FIGS.1A-1F) in accordance with some implementations. While certain specificfeatures are illustrated, those of ordinary skill in heart willappreciate from the present disclosure that various other features havenot been illustrated for the sake of brevity, and so as not to obscuremore pertinent aspects of the implementations disclosed herein. To thatend, as a non-limiting example, in some implementations the device 300includes one or more processing units (CPUs) 302, a network interface303, a programming interface 305, a memory 306, and one or morecommunication buses 304 for interconnecting these and various othercomponents.

In some implementations, the network interface 303 is provided to, amongother uses, establish and maintain a metadata tunnel between a cloudhosted network management system and at least one private networkincluding one or more compliant devices. In some implementations, thecommunication buses 304 include circuitry that interconnects andcontrols communications between system components. The memory 306includes high-speed random access memory, such as DRAM, SRAM, DDR RAM orother random access solid state memory devices, and may includenon-volatile memory, such as one or more magnetic disk storage devices,optical disk storage devices, flash memory devices, or othernon-volatile solid state storage devices. The memory 306 optionallyincludes one or more storage devices remotely located from the CPU(s)302. The memory 306 comprises a non-transitory computer readable storagemedium.

In some implementations, the memory 306 or the non-transitory computerreadable storage medium of the memory 306 stores the following programs,modules and data structures, or a subset thereof including an optionaloperating system 308, a routing criterion determination module 310, anode/link identification module 320, a route determination module 330,and a configuration module 340. In various implementations, the routingcriterion determination module 310 determines a routing criterion thatis to be used to transmit a set of data packets across a network. Tothat end, the routing criterion determination module 310 includesinstructions 310 a, and heuristics and metadata 310 b. In variousimplementations, the node/link identification module 320 identifiesnetwork nodes and communication links in the network that satisfy therouting criterion. To that end, the node/link identification module 320includes instructions 320 a, and heuristics and metadata 320 b. Invarious implementations, the route determination module 330 determines aroute for the set of data packets through the network nodes and thecommunication links that satisfy the routing criterion. To that end, theroute determination module 330 includes instructions 330 a, andheuristics and metadata 330 b. In various implementations, theconfiguration module 340 configures the network nodes that are on theroute with configuration information that allows the set of data packetsto propagate along the route. To that end, the configuration module 340includes instructions 340 a, and heuristics and metadata 340 b.

In some implementations, the method 200, the method 250 and/or thedevice 300 enable a routing criterion (e.g., a routing algorithm, forexample, an IGP prefix SID algorithm) to be defined on a per-deploymentbasis. For example, in some implementations, a flexible algorithm K isdefined as controlling (e.g., reducing, for example, minimizing) aparticular target metric (e.g., an IGP metric, a TE metric, or othernetwork performance metrics such as latency). In some implementations,the flexible algorithm K further defines a set of one or morerestrictions (e.g., exclusionary constraints or excluded resources). Insome implementations, the set of restrictions are identified by theirShared Risk Link Groups (SRLG), TE affinity and/or Internet Protocol(IP) address.

In various implementations, the method 200, the method 250 and/or thedevice 300 allow different operators to define different routingcriterion (e.g., different routing algorithms). For example, in someimplementations, an operator K that controls one or more network nodesdefines a first routing criterion as controlling an IGP metric (e.g.,reducing the IGP metric, for example, minimizing the IGP metric) andavoiding a particular SRLG (e.g., avoiding SRLG1). In someimplementations, an operator J that controls one or more network nodesdefines a second routing criterion as controlling a TE metric (e.g.,reducing the TE metric, for example, minimizing the TE metric) andavoiding TE affinity 1.

In various implementations, the method 200, the method 250 and/or thedevice 300 enable support for different routing criteria. For example,in some implementations, the method 200, the method 250 and/or thedevice 300 enable support for a routing criterion (e.g., ALG 11) thatcontrols an IGP metric (e.g., reduces the IGP metric, for example,minimizes the IGP metric) and excludes TE affinity 2. In someimplementations, the method 200, the method 250 and/or the device 300enable support for another routing criterion (e.g., ALG 12) thatcontrols the IGP metric and excludes TE affinity 1. In someimplementations, a set of Table, Length and Value (TLVs) are utilized toencode the defining characteristics of a routing criterion. In variousimplementations, the method 200, the method 250 and/or the device 300allow network-wide automation of the assignment/modification of therouting criteria.

In various implementations, the method 200, the method 250 and/or thedevice 300 allow network nodes to indicate (e.g., advertise, forexample, broadcast) the definition of their respective routingcriterion. For example, in some implementations, the device 300advertises the example routing criteria ALG 11 and ALG 12 as:

ALG 11=control (e.g., reduce, for example, minimize) IGP metric, excludeTE affinity 2, Color 1

ALG 12=control (e.g., reduce, for example, minimize) IGP metric, excludeTE affinity 1, Color 2

In some implementations, the device 300 (e.g., the node/linkidentification module 320 and/or the route determination module 330)detects inconsistencies between network nodes that support the samerouting criterion.

In some implementations, the router capability (RC) of network nodesindicates the definition of the routing criteria supported by thenetwork nodes. For example, in some implementations, the routercapability of network nodes M and N indicates that the network nodes Mand N support ALG 11:

-   -   RC of network node M indicates ALG 11=control IGP metric,        exclude TE affinity 2    -   RC of network node N indicates ALG 11=control IGP metric,        exclude TE affinity 2

Since network nodes M and N indicate the same definition for ALG 11, thedevice 300 (e.g., the node/link identification module 320 and/or theroute determination module 330) determines that the definition of therouting criterion supported by the network nodes M and N is consistent.In some implementations, the network nodes utilize a new RC TLV toindicate the definition of the routing criterion that the network nodessupport.

In various implementations, the device 300 determines whether a networknode N is enabled for (e.g., supports) a particular routing criterion(e.g., ALG(K)). If the device 300 determines that the network node Ndoes not support ALG(K), the device 300 does not include the networknode N in the route. For example, in some implementations, the networknode N does not compute ALG(K) Dijkstra and does not install ALG(K)prefix SID. If the device 300 determines that the network node Nsupports ALG(K), the device 300 prunes all the nodes that do not supportALG(K), prunes all the communication links falling under the excludeconstraints defined for ALG(K), computes Dijkstra on the resultingtopology according to the target metric associated with ALG(K), andinstalls the prefix SID according to the computed Dijkstra shortestroute for any prefix leaf with an ALG(K) prefix SID.

In various implementations, the device 300 determines a backup route(e.g., a secondary route, for example, a Fast Reroute (FRR) backuproute). In some implementations, the backup route is associated with(e.g., respects) the same characteristics (e.g., constraints) as theroute (e.g., the primary route). For example, in some implementations,the backup route is determined based on the same routing criterion asthe primary route. In some implementations, to determine (e.g., compute)the backup route for the Prefix SID S of ALG(K), the device 300 executesa Topology-Independent Loop-Free Alternate (TI-LFA) algorithm on thetopology T′(K), where T′(K) is T(K) minus the resource protected withTILFA (e.g., link, node, SRLG). In some implementations, thepost-convergence backup route is encoded with SIDs associated withALG(K).

In some implementations, the device 300 provides automated steering ofservice traffic on the IGP prefix SID with the routing criterionimplementing the service level agreement (SLA) associated with (e.g.,required by) the service route. In some implementations, when a provideredge (PE) receives a Border Gateway Protocol (BGP)/Service route R via Nwith Color Extended Community C, the PE installs R via S, where S is thePrefix SID of N for Alg(K) mapped to C. In such implementations, thereis automated steering of BGP/Service routes onto prefix SIDs associatedwith the routing criterion. The following is a non-limiting example ofautomated steering of BGP/Service routes:

-   -   PE receives BGP route 1/8 via 2.2.2.2 with color 1    -   2.2.2.2 is advertised in IGP with Prefix SID 17002 for a        particular routing criterion (e.g., ALG 11)    -   ALG 11 is defined by Mapping Server as “IGP metric, exclude        TE-affinity 2, color 1”

In the above example, PE installs 1/8 via 17002 because 17002 is thePrefix SID of 2.2.2.2 according to ALG 11. In the above example, ALG 11is bound to color 1.

In some implementations, a single SID is utilized to encode the shortestroute instead of N SIDs. In some implementations, the device 300 encodesthe shortest-route as a list of N SIDs of algorithm zero. In someimplementations, the SID list size is the primary data plane constraintfor a segment route (SR) deployment.

In some implementations, the device 300 enables flexible and customizedconfiguration of the network nodes and/or the communication links. Insome implementations, the device 300 supports dual-plane policies. Insome implementations, the device 300 encodes planes differently (e.g.,any TE affinity value can be used, and/or any SRLG value can be used).In various implementations, the device 300 enables network operators,network nodes and/or communication links to define their own routingcriterion.

In some implementations, the device 300 enables network-wide automationof adopting/modifying routing criteria. In some implementations, amapping server extension is defined to distribute the definition ofrouting criteria (e.g., an IGP algorithm) across all the network nodesof the domain/area. In some implementations, the device 300 detectsinconsistent definitions of a routing criterion. In someimplementations, a router capability extension is defined to indicate(e.g., advertise) the definition of a routing criterion for the networknodes. In some implementations, if network nodes supporting the samerouting criterion do not indicate the same definition for the routingcriterion, the device 300 detects an inconsistency. In someimplementations, the device 300 enables automated steering of serviceflows onto the prefix SID associated with the routing criterion. In someimplementations, the device 300 determines a backup route that isassociated with (e.g., follows or respects) the same constraints as theprimary route.

While various aspects of implementations within the scope of theappended claims are described above, it should be apparent that thevarious features of implementations described above may be embodied in awide variety of forms and that any specific structure and/or functiondescribed above is merely illustrative. Based on the present disclosureone skilled in the art should appreciate that an aspect described hereinmay be implemented independently of any other aspects and that two ormore of these aspects may be combined in various ways. For example, anapparatus may be implemented and/or a method may be practiced using anynumber of the aspects set forth herein. In addition, such an apparatusmay be implemented and/or such a method may be practiced using otherstructure and/or functionality in addition to or other than one or moreof the aspects set forth herein.

It will also be understood that, although the terms “first,” “second,”etc. may be used herein to describe various elements, these elementsshould not be limited by these terms. These terms are only used todistinguish one element from another. For example, a first contact couldbe termed a second contact, and, similarly, a second contact could betermed a first contact, which changing the meaning of the description,so long as all occurrences of the “first contact” are renamedconsistently and all occurrences of the second contact are renamedconsistently. The first contact and the second contact are bothcontacts, but they are not the same contact.

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of the claims. Asused in the description of the embodiments and the appended claims, thesingular forms “a”, “an” and “the” are intended to include the pluralforms as well, unless the context clearly indicates otherwise. It willalso be understood that the term “and/or” as used herein refers to andencompasses any and all possible combinations of one or more of theassociated listed items. It will be further understood that the terms“comprises” and/or “comprising,” when used in this specification,specify the presence of stated features, integers, steps, operations,elements, and/or components, but do not preclude the presence oraddition of one or more other features, integers, steps, operations,elements, components, and/or groups thereof.

As used herein, the term “if” may be construed to mean “when” or “upon”or “in response to determining” or “in accordance with a determination”or “in response to detecting,” that a stated condition precedent istrue, depending on the context. Similarly, the phrase “if it isdetermined [that a stated condition precedent is true]” or “if [a statedcondition precedent is true]” or “when [a stated condition precedent istrue]” may be construed to mean “upon determining” or “in response todetermining” or “in accordance with a determination” or “upon detecting”or “in response to detecting” that the stated condition precedent istrue, depending on the context.

What is claimed is:
 1. A method comprising: at each of plurality ofnetwork nodes, wherein each network node supports routing packetsaccording to a uniform routing criterion, indicating over the networkone or more routing capabilities supported by the network node, eachrouting capability being associated with one or more alternative routingcriteria to the uniform routing criterion; receiving, by a first node,the indications regarding the routing capabilities supported by each ofthe plurality of network nodes; determining, at the first node, one ormore alternative routing criteria to use to transmit a first set of datapackets across a network, the one or more alternative routing criteriachosen to control a Traffic Engineering (TE) metric associated withpackets as they traverse the network; identifying, based at least inpart on the received indications, one or more nodes from the pluralityof nodes that support the routing capability associated with thedetermined one or more alternative routing criteria; determining a routefor the first set of data packets through the network nodes and thecommunication links that support the routing capability and controls theTE metric; and propagating the first set of data packets along thedetermined route, wherein the route taken by the set of data packets ischosen to reduce and/or minimize a network performance metric.
 2. Themethod of claim 1, wherein the path taken by the first set of packetstraversing the system is different than a route taken by a second set ofpackets traversing the system using a route calculated using the uniformcriterion.
 3. The method of claim 1, wherein determining the route thatcontrols the latency includes minimizing the TE metric associated withthe first set of data packets traversing the network.
 4. The method ofclaim 1, wherein determining the route that controls the latencyincludes reducing the TE metric associated with of the first set of datapackets traversing the network relative to the TE metric associated witha second set of packets traversing the system using a route calculatedusing the uniform criterion.
 5. The method of claim 1, whereindetermining a routing criterion includes determining a type of the datapackets.
 6. The method of claim 3, wherein determining a route for theset of data packets through the network nodes and the communicationlinks that minimizes the TE metric includes computing the routeaccording to Dijkstra's algorithm.
 7. The method of claim 1, wherein twoor more network nodes from the plurality of nodes each receive theindications from other nodes regarding the routing capabilitiessupported by other network nodes; and wherein each network node from thetwo or more network nodes determines a forwarding entry for eachalternative routing capability based in part upon the indicationsreceived from other network nodes.
 8. A system for configurable trafficrouting comprising: a plurality of network nodes, each network nodeincluding a network interface, a non-transitory memory and one or moreprocessors coupled with the non-transitory memory, wherein each networknode supports routing packets according to a uniform routing criterion,and is further configured to support routing capabilities, each routingcapability being associated with one or more alternative criteria, andwherein each network node transmits an indication of the supportedrouting capabilities on the network interface; a communications networkwith links interconnecting the plurality of network nodes in a physicaltopology; the system further including a criterion determination module,a node/link determination module, and a route determination module;wherein the criterion determination module is configured to determineone or more operator-defined routing criteria to transmit a set of datapackets across a network, wherein the one or more alternative routingcriteria are associated with a routing capability, and wherein the oneor more alternative routing criteria are associated with control of aTraffic Engineering (TE) metric; wherein the node/link determinationmodule is configured to identify network nodes and communication linksin the network that satisfy the routing capability; and wherein theroute determination module is configured to use the one or morealternative routing criteria to identify a route for data packetsthrough the network nodes and the communication links that support therouting capability and control the TE metric; wherein the system isoperable to configure the set of network nodes and links correspondingto the route identified by the route determination module to exchange afirst set of packets traversing the system using the identified route.9. The system of claim 8 wherein the path taken by the first set ofpackets traversing the system is different than a route taken by asecond set of packets traversing the system using a route calculatedusing the uniform criterion.
 10. The system of claim 8 wherein theuniform criterion is a shortest route criterion.
 11. The system of claim8, wherein the path taken by the first set of packets minimizes the TEmetric associated with traversing the network.
 12. The system of claim8, wherein the path taken by the first set of packets reduces the TEmetric associated with traversing the network relative to the uniformrouting criterion.
 13. The system of claim 8 wherein the criteriondetermination module uses the type of the data packets as an input. 14.The system of claim 8, wherein the route determination module uses theTE metric as an input to Dijkstra's algorithm to identify the route fordata packets through the network nodes.
 15. The system of claim 8wherein more than one node includes a node/link determination module anda route determination module.
 16. A non-transitory computer-readablemedium containing logic which, when executed by one or more processors:at each of a plurality of network nodes, each network node supportingrouting packets according to a uniform routing criterion, indicate oneor more routing capabilities supported by the network node, each routingcapability being associated with a one or more operator-defined routingcriteria; receive, by a first network node, the indications regardingthe routing capabilities supported by each of the plurality of networknodes; determine, at the first network node, one or moreoperator-defined criteria to use to route a first set of data packetsacross a network, the one or more operator-defined criteria chosen tocontrol a Traffic Engineering (TE) metric associate with the first setdata packets as they traverse the network; identify, based at least inpart on the received indications, one or more network nodes from theplurality of network nodes that support the routing capabilityassociated with the determined one or more operator-defined criteria;determine a route for the first set of data packets through the networknodes and the communication links that supports the routing capabilityand controls the TE metric using at least one operator-definedcriterion; and propagate the first set of data packets along thedetermined route.
 17. The logic of claim 16, wherein the path taken bythe first set of packets traversing the system is different than a routetaken by a second set of packets traversing the system using a routecalculated using a shortest route criterion.
 18. The logic of claim 16,wherein determining the route that controls the TE metric associatedwith the data packets as they traverse the network includes minimizingthe TE metric of the first set of data packets traversing the network.19. The logic of claim 16, wherein determining the route that controlsthe TE metric associated with of the first set data packets as theytraverse the network includes reducing the TE metric associated with thefirst set of data packets traversing the network relative to the latencyof a second set of data packets traversing the network via a routecomputed using the uniform routing criterion.
 20. The logic of claim 18,wherein determining a route for the set of data packets through thenetwork nodes and the communication links that support the routingcapability and controls the TE metric includes computing the routeaccording to Dijkstra's algorithm using the TE metric as an input. 21.The logic of claim 17, wherein two or more network nodes from theplurality of network nodes each include logic to: receive theindications from other network nodes regarding the routing capabilitiessupported by the other network nodes; and determine a forwarding entryfor each routing capability supported based in part upon the indicationsreceived from other network nodes.
 22. The logic of claim 16, whereindetermining, at the first network node, one or more operator-definedcriteria to use to route a first set of data packets across a networkuses the type of the data packets as an input.